package cn.eu.mqtt.model.req;

import lombok.Getter;
import lombok.Setter;

/**
 * 设备远程升级
 */
@Getter
@Setter
public class UpgradeReq {
    /**
     * 操作ID
     */
    private Integer operationId;
    /**
     * 操作类型 <br/>
     * 0 - 停止更新 <br/>
     * 1 - 启动更新 <br/>
     */
    private Integer operateType;
    /**
     * ota升级参数
     */
    private Ota otaPara;

    @Getter
    @Setter
    public static class Ota {
        /**
         * 升级类型： <br/>
         * 0 - 物联网固件 <br/>
         * 1 - 车辆固件 <br/>
         * 2 - 蓝牙 <br/>
         * 3 - 语音包 <br/>
         * 4 - Geofence文件 <br/>
         * 5 - GPS固件 <br/>
         */
        private Integer updateType;
        /**
         * 升级子类型 <br/>
         * <table>
         *     <tr><td>升级类型</td><td>升级类型说明</td><td>子类型说明</td></tr>
         *     <tr>
         *         <td>1</td>
         *         <td>车辆固件</td>
         *         <td>
         *             1-ECU固件 <br/>
         *             2-BMS1固件（主电池） <br/>
         *             3-BMS2固件（预留） <br/>
         *             4-仪表固件 <br/>
         *             5-电池锁定固件。（仅限电动自行车） <br/>
         *             6-中继器/电缆锁固件。（仅限电动自行车） <br/>
         *             7-加密芯片固件（仅限电动自行车） <br/>
         *             8-充电端口版本（仅电动自行车） <br/>
         *             10-仪表板 <br/>
         *         </td>
         *     </tr>
         *          <tr><td>3</td>
         *          <td>语音包</td>
         *          <td>
         *              0 - ECU已锁定 <br/>
         *              1 - ECU解锁 <br/>
         *              2 - 主电源、充电、模式切换/NFC卡读数42成功/电池解锁/电池锁定锁定/电缆锁定/电缆锁定/电缆锁定/完全充电/欧拉角校准 <br/>
         *              3 - 非法移动报警 <br/>
         *              4 - 故障报警 <br/>
         *              5 - 报警（翻倒） <br/>
         *              6 - 超出范围 <br/>
         *          </td>
         *     </tr>
         * </table>
         */
        private Integer subType;
        /**
         * 下载超时时间（10-180 min）
         */
        private Integer timeout;
        /**
         * 下载地址URL（<300字节）
         */
        private String URL;
        /**
         * 文件检查码。以校验和为算法，累积文件的所有字节，取下面4个字节的数据，最后将其转换为由字符串表示的十进制整数。
         */
        private Integer checksum;
    }
}
